package entidades;


import hilos.ConectoWifi;

import com.example.tdam_2012_g3.Activity_Contactos;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import Persistencia.CreadorBD;

public class BroadCastWifiReciver extends BroadcastReceiver {

	public static final int CONEXION_WIFI = 0;
	public static final int CONEXION_3G = 1;

	/**
	 * 
	 */
	@Override
	public void onReceive(Context context, Intent intent) {
		Bundle extras = intent.getExtras();
		String action = intent.getAction();
		SharedPreferences myPreference = PreferenceManager
				.getDefaultSharedPreferences(context);

		int tipoConexion = -1;
		ConectoWifi hiloWifi = new ConectoWifi();
		NetworkInfo conexion = (NetworkInfo) extras
				.getParcelable(ConnectivityManager.EXTRA_NETWORK_INFO);

		/**
		 * como intentamos con el codigo que hay dando vueltas y no hay chance..
		 * se implementa esta forma quizas no tan perfomante aparentemente
		 * cuando intenta conectar lanza el broad cast, pero no puede crear le
		 * objeto porque todavia no hay info de modo que cuando el objeto no sea
		 * nulo quiere decir se conecto desconeco
		 */
		if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

			if (conexion != null) {
				boolean isConnected = false;
				// Preguntamos si se conecto por wifi o 3g
				// connected el name o disconnected
				if (conexion.getType() == ConnectivityManager.TYPE_WIFI) {
					if (conexion.getState().name()
							.equals(NetworkInfo.State.CONNECTED.name())) {
						tipoConexion = CONEXION_WIFI;
						isConnected = true;
					} else if (conexion.getState().name()
							.equals(NetworkInfo.State.DISCONNECTED.name())) {
						isConnected = false;
					}

				} else if (conexion.getType() == ConnectivityManager.TYPE_MOBILE) {
					// Si el estado es conectado que haga la insercion
					if (conexion.getState()	.name()	.equalsIgnoreCase(NetworkInfo.State.CONNECTED.name())) {
						tipoConexion = CONEXION_3G;
						isConnected = true;
					} else {
						conexion.getState().name().equalsIgnoreCase(NetworkInfo.State.DISCONNECTED.name());
						isConnected = false;
					}
				}
				hiloWifi.setContext(context);
				hiloWifi.setTipoConexion(tipoConexion);
				hiloWifi.setIsConnected(isConnected);
				hiloWifi.notifyConnected(myPreference.getBoolean(
						"avisoConectividad", false));
				hiloWifi.execute();

			}

		}

	}

}
